// 用户数据模块
// 导入获取用户基本信息的接口
import { reqGetUserInfo } from '@/api/user.js'
export default {
  state: {
    // 存放用户信息
    userInfo: {}
  },
  mutations: {
    // 要把发送请求获取到的用户信息赋值给state中的userInfo
    setUserInfo (state, infoObj) {
      state.userInfo = infoObj
    }
  },
  actions: {
    // 发送请求是异步的，要交给actions处理，在提交mutations修改state中的userInfo
    async getUserInfo (context) {
      const { data: { code, data: res } } = await reqGetUserInfo()
      //   console.log(code, res)
      if (code === 0) {
        context.commit('setUserInfo', res)
      }
    }
  },
  getters: {
    // 用户如果一开始没有上传头像，就显示用户名的大写首字母
    // 大写首字母是根据state中username变化的 => 要用计算属性
    // getters就是依赖原来的状态/数据，派生出新的状态/数据
    getDefaultAvatar (state) {
      // 要用三元判断，是因为如果不用，一开始会报错
    //   因为最开始userInfo是空对象，username不存在，所以报错
    // 但是发送请求后获取到了userInfo，计算属性的特点：一旦依赖的数据发生改变就会变化
      return state.userInfo.username ? state.userInfo.username[0].toUpperCase() : ''
    }
  },
  // 开启命名空间
  namespaced: true
}
